Add hook in get_user_pages to allow lookups of foreign mapped pages.
Direct IO to userspace (e.g. with libaio) needs to map user virtual addresses
down to page structs. This patch adds a new vma flag (VM_FOREIGN) to tell
get_user_pages that there are foreign frames in the vma. If VM_FOREIGN is set
vm_private_data points to a map of struct page pointers, indicating the
physical page underpinning the vaddr.
After a fair bit of discussion with Keir, this seems to be the least
intrusive way to allow this sort of lookup. If this solves things, we
can pull the VM_FOREIGN clause out into make it a noop on non-Xen
arches in the same way that the gate_area check above it is.